home *** CD-ROM | disk | FTP | other *** search
- /* rexx macro */
-
- options results /* enable return codes */
-
- if (left(address(), 6) ~= "GOLDED") then /* not started by GoldEd ? */
-
- address 'GOLDED.1'
-
- 'LOCK CURRENT RELEASE=4' /* lock GUI, gain access */
-
- if (RC ~= 0) then
-
- exit
-
- options failat 6 /* ignore warnings */
-
- signal on syntax /* ensure clean exit */
-
- /* ------------------------- INSERT YOUR CODE HERE: -------------------- */
-
- /* INPUT: SOFTWARE/K,TARGET/K (supported values: SAS/C,SAS/C-GNUMAKE,VBCC,DICE,DICE-GNUMAKE,STORMC,GENERIC) */
-
- parse arg SOFTWARE TARGET .
-
- 'QUERY CAT'
-
- if (RESULT = "deutsch") then do
-
- STRING.sMAKEFILE = "Makefile auswählen"
- STRING.sTARGET = "Target für 'make' angeben:"
- STRING.sSCMSGERROR = "Kann SAS/C-Message-Browser nicht starten !"
- end
- else do
-
- STRING.sMAKEFILE = "Select Makefile"
- STRING.sTARGET = "Specify target for 'make':"
- STRING.sSCMSGERROR = "Can not start the SAS/C message browser !"
- end
-
- /* query target */
-
- if (upper(TARGET) = "QUERYTARGET") then do
-
- 'QUERY OPTIONTARGET VAR=TARGET'
-
- 'FIX VAR=TARGET'
-
- 'REQUEST STRING TITLE="' || STRING.sTARGET || '" VAR=TARGET OLD="' || TARGET || '"'
-
- if (RC ~= 0) then do
-
- 'UNLOCK'
-
- exit
- end
-
- 'FIX VAR=TARGET'
-
- 'SET OPTIONTARGET VALUE="' || TARGET || '"'
- end
-
- SOFTWARE = upper(SOFTWARE)
-
- if (SOFTWARE = "") then
-
- SOFTWARE = "GENERIC"
-
- 'QUERY PATH VAR=PATH'
-
- R = pragma('D', PATH)
-
- /* locate makefile for current compiler */
-
- call findmakefile(SOFTWARE)
-
- if (MAKEFILE = "") then do
-
- /* locate makefile for any compiler */
-
- call findmakefile("")
-
- if (MAKEFILE = "") then do
-
- 'REQUEST FILE TITLE="' || STRING.sMAKEFILE || '" PATH="' || PATH || '" VAR=MAKEFILE'
-
- if (RC ~= 0) then do
-
- 'UNLOCK'
-
- exit
- end
- end
- end
-
- /* some make tools get confused by path information in makefile name */
-
- 'FILEPART FILE="' || MAKEFILE || '" VAR=MAKEFILE'
-
- /* identify compiler */
-
- if (pos("smakefile", MAKEFILE) ~= 0) then
-
- SOFTWARE = "SAS/C"
-
- else if (pos("dmakefile", MAKEFILE) ~= 0) then
-
- SOFTWARE = "DICE"
- else
- SOFTWARE = "GENERIC"
-
- if (MAKEFILE ~= "") then do
-
- /* still no idea what compiler we are dealing with ? */
-
- if (SOFTWARE = "GENERIC") then do
-
- if open('MAKEFILE', MAKEFILE, 'READ') then do
-
- /* determine compiler by looking at makefile */
-
- do until eof('MAKEFILE')
-
- DATA = readln('MAKEFILE')
-
- if (index(DATA, "dcc:") ~= 0) then do
-
- SOFTWARE = "DICE-GNUMAKE"
-
- leave
- end
-
- if (index(DATA, "vbcc") ~= 0) then do
-
- SOFTWARE = "VBCC"
-
- leave
- end
-
- if (index(DATA, "gcc") ~= 0) then do
-
- SOFTWARE = "GCC"
-
- leave
- end
-
- if (index(DATA, "sc:") ~= 0) then do
-
- SOFTWARE = "SAS/C-GNUMAKE"
-
- leave
- end
- end
-
- R = close('SCMSG')
- end
- end
-
- /* last attempt: make compiler decision based on options file we find */
-
- if (SOFTWARE = "GENERIC") then do
-
- if (exists("vc.config")) then
-
- SOFTWARE = "VBCC"
-
- if (exists("scoptions")) then
-
- SOFTWARE = "SAS/C-GNUMAKE";
- end
-
- /* make */
-
- if (TARGET ~= "") then
-
- TARGET = " " || TARGET
-
- /* console plug-in loaded ? */
-
- 'CMD CHECK=CONSOLE'
-
- if (RESULT = "TRUE") then
-
- 'CONSOLE CLEAR'
-
- if ((SOFTWARE = "SAS/C") | (SOFTWARE = "SAS/C-GNUMAKE")) then do
-
- /* start SAS/C message browser */
-
- call run_scmsg
-
- if (show('P', 'SC_SCMSG')) then do
-
- /* choose make tool: GNU 'make' with "makefile" and SAS/C 'smake' with "smakefile" (via scmsg) */
-
- if (SOFTWARE = "SAS/C-GNUMAKE") then do
-
- 'RUN ASYNC CONSOLE="GoldED (make)" CMD="golded:add-ons/c++/tools/make/bin/make -f *"' || MAKEFILE || '*" ' || TARGET || '" DIR="' || PATH || '" STACK=16384 SHANGHAI=5'
- end
- else do
-
- /* redirect smake console on our screen */
-
- 'RUN SHANGHAI=3'
-
- 'UNLOCK'
-
- address 'SC_SCMSG'
-
- /* make via SCMSG */
-
- 'abort'
-
- 'newbld'
-
- 'build -f "' || MAKEFILE || '"' || TARGET
-
- address
- end
- end
- end
- else if (SOFTWARE = "DICE") then do
-
- 'RUN ASYNC CONSOLE="GoldED (make)" CMD="dmake" DIR="' || PATH || '" STACK=16384 SHANGHAI=5'
- end
- else if (SOFTWARE = "VBCC") then do
-
- 'RUN ASYNC CONSOLE="GoldED (make)" CMD="golded:add-ons/c++/tools/make/bin/make -f *"' || MAKEFILE || '*" ' || TARGET || '" DIR="' || PATH || '" STACK=65535 SHANGHAI=5'
- end
- else do
-
- 'QUERY CON VAR=DIMENSIONS'
-
- 'QUERY SCREEN VAR=SCREEN'
-
- CON = "con:" || DIMENSIONS || "/make/AUTO/WAIT/CLOSE/SCREEN" || SCREEN
-
- 'RUN ASYNC CONSOLE="GoldED (make)" CMD="golded:add-ons/c++/tools/make/bin/make -f *"' || MAKEFILE || '*" ' || TARGET || '" DIR="' || PATH || '" STACK=65535 SHANGHAI=5'
- end
- end
-
- /* ---------------------------- END OF YOUR CODE ----------------------- */
-
- 'UNLOCK' /* VERY important: unlock GUI */
- EXIT
-
- SYNTAX:
-
- SAY "Sorry, error line" SIGL ":" ERRORTEXT(RC) ":-("
- 'UNLOCK'
- EXIT
-
- /* /// "run_scmsg" */
-
- run_scmsg: procedure EXPOSE STRING.
-
- /* update env variable to reflect path of current project */
-
- 'QUERY PATH VAR=PATH'
-
- 'EXPAND NAME="' || PATH || '" VAR=PATH'
-
- 'SET $sc/projdir "' || PATH || '"'
-
- /* show browser window ? */
-
- 'QUERY OPTIONBROWSER VAR=OPTIONBROWSER'
-
- /* direct SCMSG to show up on our screen */
-
- 'QUERY SCREEN VAR=PUBSCRNAME'
-
- if (show('P', 'SC_SCMSG')) then do
-
- if (OPTIONBROWSER = "TRUE") then
-
- address 'SC_SCMSG' 'opts screen ' || PUBSCRNAME
- end
- else do
-
- /* read and update SCMSG config file (update screen name and arexx port) */
-
- if (~exists("env:sc")) then
-
- 'FILE NEWDIR NAME="env:sc"'
-
- LINES = 0
-
- if open('SCMSG', 'env:sc/scmsg', 'READ') then do
-
- do until eof('SCMSG')
-
- DATA = readln('SCMSG')
-
- parse upper var DATA COMMAND .
-
- if ((COMMAND ~= "PORTNAME") & (COMMAND ~= "PUBSCREEN") & (COMMAND ~= "EDITCOMMAND") & (COMMAND ~= "GOTOFILE") & (COMMAND ~= "GOTOLINE")) then do
-
- LINES = LINES + 1
-
- CONFIG.LINES = DATA
- end
-
- end
-
- R = close('SCMSG')
-
- /* save updated config file (with current port/pubscreen name) */
-
- if open('SCMSG', 'env:sc/scmsg', 'WRITE') then do
-
- PORTNAME = ADDRESS()
-
- R = writeln('SCMSG', "PORTNAME " || PORTNAME )
-
- R = writeln('SCMSG', "PUBSCREEN " || PUBSCRNAME)
-
- R = writeln('SCMSG', "GOTOFILE WINDOW USE=%f FORCE")
-
- R = writeln('SCMSG', "GOTOLINE GOTO INDENT LINE=%l UNFOLD=TRUE")
-
- R = writeln('SCMSG', "EDITCOMMAND golded:ed")
-
- if (LINES ~= 0) then do
-
- do LINE=1 to (LINES - 1)
-
- R = writeln('SCMSG', CONFIG.LINE)
- end
- end
-
- R = close('SCMSG')
- end
- end
-
- /* run scmsg */
-
- if (exists("sc:c/scmsg")) then do
-
- COMMANDSTRING = 'sc:c/scmsg screen "' || PUBSCRNAME || '"'
-
- if (OPTIONBROWSER ~= "TRUE") then
-
- COMMANDSTRING = COMMANDSTRING || ' rexxonly'
-
- 'FIX VAR=COMMANDSTRING'
-
- 'RUN ASYNC CMD="' || COMMANDSTRING || '" WAITPORT="SC_SCMSG" SECONDS=10 DIR="' || PATH || '"'
- end
-
- if (~show('P', 'SC_SCMSG')) then do
-
- 'REQUEST PROBLEM="' || STRING.sSCMSGERROR || '"'
-
- 'UNLOCK'
-
- exit
- end
- end
-
- return
-
- /* /// */
- /* /// "run_stormc" */
-
- run_stormc: procedure EXPOSE STRING.
-
- if (~show('P', 'STORMSHELL')) then do
-
- if (exists("stormc:stormsys/stormshell")) then do
-
- 'QUERY PATH VAR=PATH'
-
- 'REQUEST STATUS="' || STRING.sSTARTINGSHELL || '"'
-
- 'RUN ASYNC CMD="stormc:stormsys/stormshell" WAITPORT="STORMSHELL" SECONDS=10 SHANGHAI=10 STACK=16384 DIR="' || PATH || '"'
-
- 'REQUEST STATUS=""'
- end
- end
-
- if (~show('P', 'STORMSHELL')) then do
-
- 'REQUEST PROBLEM="' || STRING.sSTORMSHELL || '"'
-
- 'UNLOCK'
-
- exit
- end
-
- return
-
- /* /// */
- /* /// "findmakefile" */
-
- findmakefile: procedure expose STRING. PATH MAKEFILE
-
- parse arg SOFTWARE
-
- MAKEFILE = ""
-
- /* will any makefile do or is a specific type requested ? */
-
- 'QUERY OPTIONCHOOSEMAKEFILE VAR=OPTIONCHOOSEMAKEFILE'
-
- if (OPTIONCHOOSEMAKEFILE = "TRUE") then do
-
- 'REQUEST FILE TITLE="' || STRING.sMAKEFILE || '" PATH="' || PATH || '" VAR=MAKEFILE'
-
- if (RC ~= 0) then do
-
- 'UNLOCK'
-
- exit
- end
- end
- else do
-
- if (SOFTWARE = "") then do
-
- if (exists("dmakefile")) then
-
- MAKEFILE = "dmakefile";
-
- else if (exists("smakefile")) then
-
- MAKEFILE = "smakefile";
-
- else if exists("makefile") then
-
- MAKEFILE = "makefile";
- end
- else do
-
- if (SOFTWARE = "DICE") then do
-
- if (exists("dmakefile")) then
-
- MAKEFILE = "dmakefile";
- end
- else if (SOFTWARE = "SAS/C") then do
-
- if (exists("smakefile")) then
-
- MAKEFILE = "smakefile";
- end
- else do /* GENERIC, VBCC, SAS/C-GNUMAKE, DICE-GNUMAKE */
-
- if exists("makefile") then
-
- MAKEFILE = "makefile";
- end
- end
- end
-
- return
-
- /* /// */
-